const { app, BrowserWindow, ipcMain } = require('electron');
const path = require('path');
const fs = require('fs');

// 保持对窗口对象的全局引用，防止JavaScript对象被垃圾回收时窗口被自动关闭
let mainWindow;

function createWindow() {
  // 创建浏览器窗口
  mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js'),
      nodeIntegration: true,
      contextIsolation: false
    }
  });

  // 加载应用的 index.html
  mainWindow.loadFile('index.html');

  // 打开开发者工具
  // mainWindow.webContents.openDevTools();

  // 当窗口关闭时触发
  mainWindow.on('closed', function () {
    // 取消引用窗口对象，如果你的应用支持多窗口，可以将窗口存储在数组中
    mainWindow = null;
  });
}

// 当Electron完成初始化并准备创建浏览器窗口时调用这个方法
app.whenReady().then(createWindow);

// 当所有窗口关闭时退出应用
app.on('window-all-closed', function () {
  // 在 macOS 上，除非用户用 Cmd + Q 确定地退出，否则大部分应用及其菜单栏会保持激活
  if (process.platform !== 'darwin') app.quit();
});

app.on('activate', function () {
  // 在macOS上，当点击dock图标并且没有其他窗口打开时，重新创建一个窗口
  if (BrowserWindow.getAllWindows().length === 0) createWindow();
});

// 处理音乐文件选择
ipcMain.handle('select-music', async (event) => {
  const { dialog } = require('electron');
  const result = await dialog.showOpenDialog(mainWindow, {
    properties: ['openFile', 'multiSelections'],
    filters: [
      { name: '音频文件', extensions: ['mp3', 'wav', 'flac', 'm4a'] },
      { name: '视频文件', extensions: ['mp4', 'avi', 'mov', 'mkv'] }
    ]
  });
  return result.filePaths;
});

// 处理获取音乐文件信息的请求
ipcMain.handle('get-music-info', async (event, filePath) => {
  try {
    const stats = fs.statSync(filePath);
    const fileName = path.basename(filePath);
    const fileExtension = path.extname(filePath).toLowerCase();
    
    return {
      path: filePath,
      name: fileName,
      extension: fileExtension,
      size: stats.size,
      createdAt: stats.birthtime,
      modifiedAt: stats.mtime,
      isVideo: ['.mp4', '.avi', '.mov', '.mkv'].includes(fileExtension)
    };
  } catch (error) {
    console.error('获取文件信息失败:', error);
    return null;
  }
});